package com.ruoyi.manage.mapper;

import java.util.List;
import com.ruoyi.manage.domain.CrMatchingRecord;
import org.apache.ibatis.annotations.Param;

/**
 * 智能匹配记录Mapper接口
 */
public interface CrMatchingRecordMapper
{
    /**
     * 查询智能匹配记录
     */
    public CrMatchingRecord selectCrMatchingRecordByRecordId(Long recordId);

    /**
     * 查询智能匹配记录列表
     */
    public List<CrMatchingRecord> selectCrMatchingRecordList(CrMatchingRecord crMatchingRecord);

    /**
     * 查询学生的匹配记录
     */
    public List<CrMatchingRecord> selectStudentMatchingRecords(@Param("userId") Long userId, @Param("isRecommended") String isRecommended);

    /**
     * 查询社团的匹配记录
     */
    public List<CrMatchingRecord> selectClubMatchingRecords(@Param("clubId") Long clubId, @Param("isRecommended") String isRecommended);

    /**
     * 查询推荐的匹配记录（按分数排序）
     */
    public List<CrMatchingRecord> selectRecommendedMatches(@Param("userId") Long userId, @Param("limit") int limit);

    /**
     * 查询最佳匹配的学生（社团端使用）
     */
    public List<CrMatchingRecord> selectBestMatchedStudents(@Param("clubId") Long clubId, @Param("recruitmentId") Long recruitmentId, @Param("limit") int limit);

    /**
     * 根据用户和社团查询匹配记录
     */
    public CrMatchingRecord selectMatchingRecordByUserAndClub(@Param("userId") Long userId, @Param("clubId") Long clubId, @Param("recruitmentId") Long recruitmentId);

    /**
     * 统计匹配记录数量
     */
    public int countMatchingRecordsByUser(@Param("userId") Long userId);

    /**
     * 统计推荐记录数量
     */
    public int countRecommendedMatches(@Param("userId") Long userId);

    /**
     * 查询匹配分数分布
     */
    public List<CrMatchingRecord> selectScoreDistribution(@Param("clubId") Long clubId);

    /**
     * 批量插入匹配记录
     */
    public int batchInsertMatchingRecords(@Param("records") List<CrMatchingRecord> records);

    /**
     * 新增智能匹配记录
     */
    public int insertCrMatchingRecord(CrMatchingRecord crMatchingRecord);

    /**
     * 修改智能匹配记录
     */
    public int updateCrMatchingRecord(CrMatchingRecord crMatchingRecord);

    /**
     * 删除智能匹配记录
     */
    public int deleteCrMatchingRecordByRecordId(Long recordId);

    /**
     * 批量删除智能匹配记录
     */
    public int deleteCrMatchingRecordByRecordIds(Long[] recordIds);

    /**
     * 删除用户的匹配记录
     */
    public int deleteMatchingRecordsByUserId(Long userId);

    /**
     * 删除社团的匹配记录
     */
    public int deleteMatchingRecordsByClubId(Long clubId);

    /**
     * 更新推荐状态
     */
    public int updateRecommendationStatus(@Param("recordId") Long recordId, @Param("isRecommended") String isRecommended);
}